package cn.com.khproc;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.util.Iterator;

/**
 * 
* @Title: transToLower
* @Description: 将Json的Key批量变为小写
* @author: LiJuntao
* @date 2019-12-18 下午9:03:42
*
 */
public class transToLower {

	public static String ToLower(String json) {
		JSONObject jsonObject = JSONObject.fromObject(json);
		// 方法一：重新解析jsonObject中的key，转换为小写的key
		jsonObject = transToLowerObject(jsonObject);
		return jsonObject.toString();
	}

	public static JSONObject transToLowerObject(JSONObject jSONArray1) {
		JSONObject jSONArray2 = new JSONObject();
		Iterator<?> it = jSONArray1.keys();
		while (it.hasNext()) {
			String key = (String) it.next();
			Object object = jSONArray1.get(key);
			if (object.getClass().toString().endsWith("String")) {
				jSONArray2.accumulate(key.toLowerCase(), object);
			} else if (object.getClass().toString().endsWith("Integer")) {
				jSONArray2.accumulate(key.toLowerCase(), object);
			} else if (object.getClass().toString().endsWith("Boolean")) {
				jSONArray2.accumulate(key.toLowerCase(), object);
			} else if (object.getClass().toString().endsWith("Double")) {
				jSONArray2.accumulate(key.toLowerCase(), object);
			} else if (object.getClass().toString().endsWith("JSONNull")) {
				jSONArray2.accumulate(key.toLowerCase(), object);
			} else if (object.getClass().toString().endsWith("JSONObject")) {
				jSONArray2.accumulate(key.toLowerCase(), transToLowerObject((JSONObject) object));
			} else if (object.getClass().toString().endsWith("JSONArray")) {
				jSONArray2.accumulate(key.toLowerCase(), transToArray(jSONArray1.getJSONArray(key)));
			} else {
				jSONArray2.accumulate(key.toLowerCase(), object);
			}
		}
		return jSONArray2;
	}

	public static JSONArray transToArray(JSONArray jSONArray1) {
		JSONArray jSONArray2 = new JSONArray();
		for (int i = 0; i < jSONArray1.size(); i++) {
			Object jArray = jSONArray1.getJSONObject(i);
			if (jArray.getClass().toString().endsWith("JSONObject")) {
				jSONArray2.add(transToLowerObject((JSONObject) jArray));
			} else if (jArray.getClass().toString().endsWith("JSONArray")) {
				jSONArray2.add(transToArray((JSONArray) jArray));
			}
		}
		return jSONArray2;
	}
}